// ProjectName: go-learn-demo
// PackageName: elasticybxb
// Description: 全类型API操作索引
// Author: hy.bai
// Date: 2025-09-01 星期一 18:34

package elasticybxb

import (
	"context"
	"fmt"
	"log/slog"
)

var AllIndex allIndex

type allIndex struct {
}

// 创建索引
func (*allIndex) ElasticCreateIndex() {
	client, _ := AllInitElastic.InitElasticByUsername()
	// 全类型API的方式创建索引
	resp, err := client.Indices.Create(ALL_INDEX_NAME).Do(context.TODO())
	if err != nil {
		slog.Error(fmt.Sprintf("Elastic Create Index Error: %s", err.Error()))
		return
	}
	fmt.Println(resp)
}

// 全类型API查询索引
func (*allIndex) ElasticGetIndex() {
	client, _ := AllInitElastic.InitElasticByUsername()
	// 全类型API的方式获取索引
	resp, err := client.Indices.Get(ALL_INDEX_NAME).Do(context.TODO())
	if err != nil {
		slog.Error(fmt.Sprintf("Elastic Get Index Error: %s", err.Error()))
		return
	}
	// 打印结果：resp，直接是一个map[string]types.IndexState类型的对象
	fmt.Println(resp)
}

// 全类型API删除索引
func (*allIndex) ElasticDeleteIndex() {
	client, _ := AllInitElastic.InitElasticByUsername()
	// 全类型API的方式删除索引
	resp, err := client.Indices.Delete(ALL_INDEX_NAME).Do(context.TODO())
	if err != nil {
		slog.Error(fmt.Sprintf("Elastic Get Index Error: %s", err.Error()))
		return
	}
	// 打印结果：resp，直接是一个map[string]types.IndexState类型的对象
	fmt.Println(resp)
}

func TestAllElasticIndex() {
	AllIndex.ElasticDeleteIndex()
}
